﻿using System;
using _1.FactoryPattern.Pattern;

/*
 * 工厂模式
 *
 * 意图：定义一个创建对象的接口，让其子类自己决定实例化哪一个工厂类，工厂模式使其创建过程延迟到子类进行。
 *
 * 应用实例：您需要一辆汽车，可以直接从工厂里面提货，而不用去管这辆汽车是怎么做出来的，
 * 以及这个汽车里面的具体实现。
 */
namespace _1.FactoryPattern
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Factory Pattern: ");
            var shapeFactory = new ShapeFactory();
            var rect = shapeFactory.GetSharp("Rect");
            var circle = shapeFactory.GetSharp("Circle");
            var square = shapeFactory.GetSharp("Square");

            rect.Draw();
            circle.Draw();
            square.Draw();

            Console.ReadLine();
        }
    }
}
